var nombreEmpresa = '';
var codigoRuc = '';

function setAutoAyudaEmpresaClick(nIdeEmpresa, nIdeCodPaisDoc, nIdeTipoDocum, vNumDocum, nameCampoAuto, pURL, sw,boton) {
    $(nameCampoAuto).autocomplete({
        source: function (request, response) {
            $.ajax({
                url: pURL,
                type: "POST",
                dataType: "json",
                data: { maxRows: 15, wordSearch: request.term, sw: sw },
                success: function (data) {
                    if (data) {
                        response($.map(data, function (item) {
                            return {
                                nIdePersonaRes: item.nIdePersonaRes, nIdeCodPaisDocRes: item.nIdeCodPaisDocRes, nIdeTipoDocumRes: item.nIdeTipoDocumRes, value: item.vEmpresa, vNumDocumRes: item.vNumDocumRes
                            };
                        }))
                    }
                }
            })
        },
        minLength: 4,
        select: function (event, ui) {
            codigoRuc = ui.item.vNumDocumRes;
            if (sw == '1') {
                //alert(ui.item.nIdePersonaRes);
                nombreEmpresa = ui.item.value;
                $(nIdeEmpresa).val(ui.item.nIdePersonaRes);
                $(nIdeCodPaisDoc).val(ui.item.nIdeCodPaisDocRes);
                $(nIdeTipoDocum).val(ui.item.nIdeTipoDocumRes);
                $(vNumDocum).val(ui.item.vNumDocumRes);
            } else if (sw == '2') {
                nombreEmpresa = ui.item.value;
                $(nIdeEmpresa).val(ui.item.nIdePersonaRes);
                $(nIdeCodPaisDoc).val(ui.item.nIdeCodPaisDocRes);
                $(nIdeTipoDocum).val(ui.item.nIdeTipoDocumRes);
                $(vNumDocum).val(ui.item.vNumDocumRes);
            }
            $(boton).click();
        },
        open: function (event, ui) {
            $(nIdeEmpresa).val('');
            $(nIdeCodPaisDoc).val('');
            $(nIdeTipoDocum).val('');
            $(vNumDocum).val('');
        },
        close: function () {
            if ($.trim($(nIdeEmpresa).val()).length > 0) {
                if (sw == '2') {
                    $(this).val(codigoRuc);
                    $(vNumDocum).val(nombreEmpresa);
                } else {
                    $(this).val(nombreEmpresa);
                }
            }
        }
    });
}




function setAutoAyudaInteresado(nIdeEmpresa, nIdeCodPaisDoc, nIdeTipoDocum, vNumDocum, nameCampoAuto, pURL, sw) {
    $(nameCampoAuto).autocomplete({
        source: function (request, response) {
            $.ajax({
                url: pURL,
                type: "POST",
                dataType: "json",
                data: { maxRows: 15, wordSearch: request.term, sw: sw, nIdeTipoDocum: $(nIdeTipoDocum).val() },
                success: function (data) {
                    if (data) {
                        response($.map(data, function (item) {
                            return {
                                nIdePersonaRes: item.nIdePersonaRes, nIdeCodPaisDocRes: item.nIdeCodPaisDocRes, nIdeTipoDocumRes: item.nIdeTipoDocumRes, value: item.vEmpresa, vNumDocumRes: item.vNumDocumRes
                            };
                        }))
                    }
                }
            })
        },
        minLength: 4,
        select: function (event, ui) {
            codigoRuc = ui.item.vNumDocumRes;
            if (sw == '1') {
                //alert(ui.item.nIdePersonaRes);
                nombreEmpresa = ui.item.value;
                $(nIdeEmpresa).val(ui.item.nIdePersonaRes);
                $(nIdeCodPaisDoc).val(ui.item.nIdeCodPaisDocRes);
                $(nIdeTipoDocum).val(ui.item.nIdeTipoDocumRes);
                $(vNumDocum).val(ui.item.vNumDocumRes);
            } else if (sw == '2') {
                nombreEmpresa = ui.item.value;
                $(nIdeEmpresa).val(ui.item.nIdePersonaRes);
                $(nIdeCodPaisDoc).val(ui.item.nIdeCodPaisDocRes);
                $(nIdeTipoDocum).val(ui.item.nIdeTipoDocumRes);
                $(vNumDocum).val(ui.item.vNumDocumRes);
            }
        },
        open: function (event, ui) {
            $(nIdeEmpresa).val('');
            $(nIdeCodPaisDoc).val('');
            $(nIdeTipoDocum).val('');
            $(vNumDocum).val('');
        },
        close: function () {
            if ($.trim($(nIdeEmpresa).val()).length > 0) {
                if (sw == '2') {
                    $(this).val(codigoRuc);
                    $(vNumDocum).val(nombreEmpresa);
                } else {
                    $(this).val(nombreEmpresa);
                }
            }
        }
    });
}


function setAutoAyudaEmpresa(nIdeEmpresa, nIdeCodPaisDoc, nIdeTipoDocum, vNumDocum, nameCampoAuto, pURL, sw) {
    $(nameCampoAuto).autocomplete({
        source: function (request, response) {
            $.ajax({
                url: pURL,
                type: "POST",
                dataType: "json",                
                data: { maxRows: 15, wordSearch: request.term, sw: sw },
                success: function (data) {
                    if (data) {
                        response($.map(data, function (item) {
                            return {
                                nIdePersonaRes: item.nIdePersonaRes, nIdeCodPaisDocRes: item.nIdeCodPaisDocRes, nIdeTipoDocumRes: item.nIdeTipoDocumRes, value: item.vEmpresa, vNumDocumRes: item.vNumDocumRes
                                };
                        }))
                    }
                }
            })
        },
        minLength: 4,
        select: function (event, ui) {
            codigoRuc = ui.item.vNumDocumRes;
            if (sw == '1') {
                //alert(ui.item.nIdePersonaRes);
                nombreEmpresa = ui.item.value;
                $(nIdeEmpresa).val(ui.item.nIdePersonaRes);
                $(nIdeCodPaisDoc).val(ui.item.nIdeCodPaisDocRes);
                $(nIdeTipoDocum).val(ui.item.nIdeTipoDocumRes);
                $(vNumDocum).val(ui.item.vNumDocumRes);
            } else if (sw == '2') {
                nombreEmpresa = ui.item.value;
                $(nIdeEmpresa).val(ui.item.nIdePersonaRes);
                $(nIdeCodPaisDoc).val(ui.item.nIdeCodPaisDocRes);
                $(nIdeTipoDocum).val(ui.item.nIdeTipoDocumRes);
                $(vNumDocum).val(ui.item.vNumDocumRes);
            }
        },
        open: function (event, ui) {         
           $(nIdeEmpresa).val('');
           $(nIdeCodPaisDoc).val('');
           $(nIdeTipoDocum).val('');
           $(vNumDocum).val('');
        },
        close: function () {           
            if ($.trim($(nIdeEmpresa).val()).length > 0) {
                if (sw == '2') {
                    $(this).val(codigoRuc);
                    $(vNumDocum).val(nombreEmpresa);
                } else {
                    $(this).val(nombreEmpresa);
                }
            }
        }
    });
}

function setAutoAyudaProveedor(nameCampo,nameId, pURL,sw,nombrePersona) {
    $(nameCampo).autocomplete({
        source: function (request, response) {
            $.ajax({
                url: pURL,
                type: "POST",
                dataType: "json",
                data: { wordSearch: request.term,sw:sw },
                success: function (data) {
                    if(data){                    
                    response($.map(data, function (item) {                       
                        return {ruc: item.NUMDOCUMENTO, value: item.NUMDOCUMENTO +" - "+item.DESCRIPCION ,
                                id: item.IDENTIFICADOR,nombre:item.DESCRIPCION };
                    }))
                    }
                }
            })
        },
        minLength: 4,
        select: function (event, ui) {
           $(nameId).val('');
            if(sw=='1'){
                pRUC=ui.item.ruc;
                $(nameId).val(ui.item.id); 
                $(nombrePersona).val(ui.item.nombre); 
           }else if (sw=='2'){
                pRUC=ui.item.nombre;
                $(nameId).val(ui.item.id); 
                $(nombrePersona).val(ui.item.ruc);
           }
        },
        open: function (event, ui) { 
            $(nameId).val('');
            $(nombrePersona).val('');
        },
        close: function() {
        if($.trim($(nameId).val()).length >0){
         $(this).val(pRUC);  
        }  
      }
    });
}

function setAutoAyudaForma1(nameControl, pURL, hiddenControl) {

    $(nameControl).autocomplete({
        source: function (request, response) {
            $.ajax({
                url: pURL,
                type: "POST",
                dataType: "json",
                data: { wordSearch: request.term },
                success: function (data) {
                    response($.map(data, function (item) {
                        return { label: item.vNomTabla, value: item.vNomTabla, id: item.nIdeCompendio };
                    }))
                }
            })
        },
        minLength: 4,
        select: function (event, ui) {
            $(hiddenControl).val('');
            $(hiddenControl).val(ui.item.id);
        },
        open: function (event, ui) {
            $(hiddenControl).val('');
        }
    });
}

function setAutoAyudaMultiple(nameCampo, pURL) {
    $(nameCampo).bind("keydown", function (event) {
        if (event.keyCode === $.ui.keyCode.TAB &&
            $(this).data("ui-autocomplete").menu.active) {
            event.preventDefault();
        }
    }).autocomplete({
        source: function (request, response) {
            $.getJSON(pURL, {term: extractLast(request.term)}, response);
        },
        search: function () {
            var term = extractLast(this.value);
            if (term.length < 3) {
                return false;
            }
        },
        focus: function () {           
            return false;
        },
        select: function (event, ui) {
            var terms       =   split(this.value);
            var ide         =   $.strPad(ui.item.id, 4, '0', 'STR_PAD_LEFT');
            var valor       =   ui.item.value + " <" + ide + ">";           
            var miValor     =   terms.pop();
            var noExiste    =   validaExisteValor(terms, valor);
            if (noExiste) {
                terms.push(valor);
                terms.push("");
               this.value = terms.join(", ");
            } else {
                this.value = terms+", ";
            }
            return false;
        }
    });
}

function setAutoAyudaInstitucion(nIdeEmpresa, nIdeCodPaisDoc, nIdeTipoDocum, vNumDocum, nameCampoAuto, pURL, sw) {
    $(nameCampoAuto).autocomplete({
        source: function (request, response) {
            $.ajax({
                url: pURL,
                type: "POST",
                dataType: "json",
                data: { maxRows: 15, wordSearch: request.term, sw: sw },
                success: function (data) {
                    if (data) {
                        response($.map(data, function (item) {
                            return {
                                nIdePersonaRes: item.nIdePersonaRes, nIdeCodPaisDocRes: item.nIdeCodPaisDocRes, nIdeTipoDocumRes: item.nIdeTipoDocumRes, value: item.vEmpresa, vNumDocumRes: item.vNumDocumRes
                            };
                        }))
                    }
                }
            })
        },
        minLength: 4,
        select: function (event, ui) {
            codigoRuc = ui.item.vNumDocumRes;
            if (sw == '1') {
                //alert(ui.item.nIdePersonaRes);
                nombreEmpresa = ui.item.value;
                $(nIdeEmpresa).val(ui.item.nIdePersonaRes);
                $(nIdeCodPaisDoc).val(ui.item.nIdeCodPaisDocRes);
                $(nIdeTipoDocum).val(ui.item.nIdeTipoDocumRes);
                $(vNumDocum).val(ui.item.vNumDocumRes);
            } else if (sw == '2') {
                nombreEmpresa = ui.item.value;
                $(nIdeEmpresa).val(ui.item.nIdePersonaRes);
                $(nIdeCodPaisDoc).val(ui.item.nIdeCodPaisDocRes);
                $(nIdeTipoDocum).val(ui.item.nIdeTipoDocumRes);
                $(vNumDocum).val(ui.item.vNumDocumRes);
            }
        },
        open: function (event, ui) {
            $(nIdeEmpresa).val('');
            $(nIdeCodPaisDoc).val('');
            $(nIdeTipoDocum).val('');
            $(vNumDocum).val('');
        },
        close: function () {
            if ($.trim($(nIdeEmpresa).val()).length > 0) {
                if (sw == '2') {
                    $(this).val(codigoRuc);
                    $(vNumDocum).val(nombreEmpresa);
                } else {
                    $(this).val(nombreEmpresa);
                }
            }
        }
    });
}
function setAutoAyudaCompendioDetalle(nameCampo, nameIdHiden, nIdeCompendio, pURL) {
    $(nameCampo).autocomplete({
        source: function (request, response) {
            $.ajax({
                url: pURL,
                type: "POST",
                dataType: "json",
                data: { wordSearch: request.term, n_IdeCompendio: nIdeCompendio },
                success: function (data) {
                    response($.map(data, function (item) {
                        return { value: item.vNomDetalle, id: item.nIdeDetalle };
                    }))
                }
            })
        },
        minLength: 3,
        select: function (event, ui) {
            $(nameIdHiden).val('');
            $(nameIdHiden).val(ui.item.id);
        },
        open: function (event, ui) { $(nameIdHiden).val(''); }
    });
}
function split(val) {
    return val.split(/,\s*/);
}
function extractLast(term) {
    return split(term).pop();
}

function validaExisteValor(terms, valor) {
    var existe      =   true;
    var valorPush   =   valorEntreCorchete(valor);
    var valorActual =   '';
    for (var i = 0; i < terms.length; i++){        
        valorActual = valorEntreCorchete(terms[i]);
        if (valorPush === valorActual) {
            existe = false;
            break;
        }        
    }
    return existe;
}